package com.jwds.digital.bios.business.service.service.belt;

import com.baomidou.mybatisplus.extension.service.IService;
import com.jwds.digital.bios.business.core.infrastructure.dto.belt.FiveDefenseCount;
import com.jwds.digital.bios.business.core.infrastructure.entity.belt.BeltHealthScore;
import com.jwds.digital.bios.business.core.infrastructure.dto.belt.BeltHealthScoreReqDTO;
import com.jwds.digital.bios.business.core.infrastructure.entity.belt.BeltPerformanceMinute;
import com.jwds.digital.bios.business.core.infrastructure.vo.belt.BeltHealthScoreRespVO;
import com.jwds.tdc.framework.application.lib.page.PageRequest;
import com.jwds.tdc.framework.application.lib.page.PageResponse;
import org.springframework.transaction.annotation.Transactional;

import java.util.List;

/**
 * 皮带健康评分表接口
 *
 * @author 林柏云
 * @date 2024-10-24
 */
public interface IBeltHealthScoreService extends IService<BeltHealthScore> {

    /**
     * 通过id查询
     *
     * @param id 主键id
     * @return RespVO 查询结果
     */
    BeltHealthScoreRespVO queryById(Long id);

    /**
     * 分页查询
     *
     * @param pageRequest 分页查询参数
     * @return pageResponse 分页查询结果
     */
    PageResponse<BeltHealthScoreRespVO> page(PageRequest<BeltHealthScoreReqDTO> pageRequest);

    /**
     * 列表查询
     *
     * @param reqDto 查询条件
     * @return respVOList 查询结果
     */
    List<BeltHealthScoreRespVO> list(BeltHealthScoreReqDTO reqDto);

    /**
     * 新增
     *
     * @param reqDto 新增对象
     */
    void add(BeltHealthScoreReqDTO reqDto);

    /**
     * 批量新增
     *
     * @param reqDtoList 新增对象列表
     */
    void batchAdd(List<BeltHealthScoreReqDTO> reqDtoList);

    /**
     * 更新
     *
     * @param reqDto 更新对象
     */
    void update(BeltHealthScoreReqDTO reqDto);

    /**
     * 根据Id删除
     *
     * @param id 主键id
     */
    void delete(Long id);

    /**
     * 批量删除
     *
     * @param ids 主键id列表
     */
    void batchDelete(List<Long> ids);

    /**
     * 判断数值范围类型异常
     *
     * @param beltPerformanceMinute 皮带性能分钟
     * @param type                  类型
     */
    @Transactional
    void determineTheNumericalRangeTypeAnomaly(BeltPerformanceMinute beltPerformanceMinute, String type);

    /**
     * 判断信号类型异常
     */
    @Transactional
    void determineTheSignalTypeAnomaly(FiveDefenseCount fiveDefenseCount, String type);

    /**********扩展查询************/

}